package array;

import java.util.Arrays;

/**
 * @author lj
 * @date 2022/01/12 16:37
 * @email milolj@foxmail.com
 */
public class LeetCode_array9 {
    /**
     给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。

     你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。

     你可以按任意顺序返回答案。

      

     示例 1：

     输入：nums = [2,7,11,15], target = 9
     输出：[0,1]
     解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
     示例 2：

     输入：nums = [3,2,4], target = 6
     输出：[1,2]
     示例 3：

     输入：nums = [3,3], target = 6
     输出：[0,1]

     作者：力扣 (LeetCode)
     链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2jrse/
     来源：力扣（LeetCode）
     著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    /**
     * 执行用时：
     * 91 ms
     * , 在所有 Java 提交中击败了
     * 5.13%
     * 的用户
     * 内存消耗：
     * 38.7 MB
     * , 在所有 Java 提交中击败了
     * 38.11%
     * 的用户
     * 通过测试用例：
     * 57 / 57
     * @param args
     */


    public static void main(String[] args) {
//        int[] array1 = new int[]{13,19,92};
//        int[] array2 = new int[]{13};
        int[] array1 = new int[]{2,7,11,15};

        LeetCode_array9 leetCode_array1 = new LeetCode_array9();
        long currentTimeMillis1 = System.currentTimeMillis();
        System.out.println("当前时间是：" + currentTimeMillis1);
        int[] ints = leetCode_array1.twoSum(array1, 9);
        System.out.println("结果是"+Arrays.toString(ints));
        System.out.println("小号的时间是：" + (System.currentTimeMillis() - currentTimeMillis1));
    }

    public int[] twoSum(int[] nums, int target) {
       int index = 0;
       int size;
       for (int i = index; i < nums.length; i++) {
            size = target - nums[index];
            if (size == nums[i] && index != i ) {
                return new int[]{index,i};
            }
            if(i == nums.length - 1) {
                index++;
                i=index-1;
            }
        }
       return new int[]{};
    }

    /**
     *  public int[] twoSum(int[] nums, int target) {
     *         Map<Integer, Integer> m = new HashMap<>();
     *         for (int i = 0; i < nums.length; i++) {
     *             if (m.get(target - nums[i]) != null) {
     *                 return new int[]{m.get(target - nums[i]), i};
     *             }
     *             m.put(nums[i], i);
     *         }
     *         return new int[]{0, 0};
     *     }
     *
     *
     * 作者：数据结构和算法
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2jrse/?discussion=bsiO6a
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
}
